/*
	连接具体步骤如下：
	1.iscp初始化
	2.建立安全连接
	3.获取本地监听端口
*/

/// //////////////////////// ISCP[Begin] ///////////////////////////

//* ***i国网调用安全交互平台
// 返回值 0：成功，1000：安全链接失败，1001：方法报错，1002：进程退出请重新连接
/* 湖北
var UAPCFG = {
  ISCP_IP: "202.110.130.19", // isc申请的ip
  ISCP_PORT: "20083", // isc申请的端口号
  ISCP_USER: "user", // 固定值
  ISCP_APPID: "hbhq", // isc申请的appid
  XTBG_IP: "172.25.201.18", // 真正的后台ip
  XTBG_PORT: "19090", // 真正的后台端口号
}; */

/* 江西 */
var UAPCFG = {
  ISCP_IP: "218.65.110.139", // isc申请的ip
  ISCP_PORT: "8080", // isc申请的端口号
  ISCP_USER: "user", // 固定值
  ISCP_APPID: "hqznbzpt", // isc申请的appid
  XTBG_IP: "20.60.252.143", // 真正的后台ip
  XTBG_PORT: "80" // 真正的后台端口号
}

let scheduleMsg = null
window.onload = function () {
  scheduleMsg = document.getElementById("scheduleMsg")
}

function ISCP_GetParam(idx) {
  if (typeof UAPCFG === "string") UAPCFG = funSM4Str2Json(UAPCFG)
  var arr = [
    {
      iscpIP: UAPCFG.ISCP_IP,
      iscpPort: UAPCFG.ISCP_PORT,
      user: UAPCFG.ISCP_USER,
      appId: UAPCFG.ISCP_APPID
    },
    {
      iscpIP: UAPCFG.ISCP_IP,
      iscpPort: UAPCFG.ISCP_PORT,
      ip: UAPCFG.XTBG_IP,
      port: UAPCFG.XTBG_PORT
    },
    {
      iscpIP: UAPCFG.ISCP_IP,
      iscpPort: UAPCFG.ISCP_PORT,
      ip: "http://" + UAPCFG.XTBG_IP,
      port: UAPCFG.XTBG_PORT
    }
  ]
  console.log(arr[idx], "arr[idx]")

  return arr[idx]
}

// ISCP初始化
function ISCP_Init(callback, callbackError) {
  console.log("正在建立安全连接.", "ISCP")
  top.uexISCP.Init(ISCP_GetParam(0), function (state, log) {
    // console.log('安全交互平台初始化:'+state+':'+log,'ISCP');
    console.log("状态:" + state, "log:" + log)
    if (state == 0) {
      // 初始化成功
      if (scheduleMsg) {
        scheduleMsg.style.width = "20%"
      }
      console.log("安全交互平台初始化[成功]" + log, "ISCP")
      if (typeof callback === "function") callback()
    }
    if (state == 1) {
      // 断线
      alert("安全交互平台初始化失败!")
      wx.closeWindow()
      console.log("安全交互平台初始化[失败]" + log, "ISCP")
    }
  })
}

// 建立安全链接
function ISCP_ConnectServer(callback, callbackError) {
  console.log("正在建立安全连接..", "ISCP")
  console.log(ISCP_GetParam(0))
  top.uexISCP.ConnectIscpServer(ISCP_GetParam(0), function (state, msg) {
    console.log(state)
    console.log(msg)
    if (state == 0) {
      if (scheduleMsg) {
        scheduleMsg.style.width = "40%"
      }
      console.log("安全链接建立[成功]" + msg, "ISCP")
      if (typeof callback === "function") callback()
    } else {
      alert("安全链接建立失败!")
      wx.closeWindow()
      console.log("安全链接建立[失败]" + msg, "ISCP")
      if (typeof callbackError === "function") callbackError()
    }
  })
}

// 获取本地监听端口 funGetLocalPort
function ISCP_GetLocalPort (callback, callbackError) {
  // console.log('获取本地安全监听端口','ISCP');
  console.log('正在建立安全连接...', 'ISCP')
  top.uexISCP.getLocalPort(ISCP_GetParam(1), function (state, result) {
    if (state != -1) {
      if (scheduleMsg) {
        scheduleMsg.style.width = "60%"
      }
      console.log("获取本地安全监听端口[成功]" + result, "ISCP")
      sessionStorage.setItem("UAP_ISC_PORT", result)
      if (typeof callback === "function") callback()
    } else {
      alert("获取本地安全监听端口失败!")
      wx.closeWindow()
      console.log("获取本地安全监听端口[失败]" + result, "ISCP")
      if (typeof callbackError === "function") callbackError()
    }
  })
}

// 地址转换
function ISCP_AnalyseUrl (callback, callbackError) {
  // console.log('安全交互平台地址转换','ISCP');
  console.log('正在建立安全连接....', 'ISCP')
  top.uexISCP.AnalyseUrlByISCP(ISCP_GetParam(2), function (error, result) {
    console.log("安全交互平台地址转换:" + result, "ISCP")
    top.contextPath = result
    if (typeof callback === "function") callback(result)
  })
}

// 获取ISCP连接状态
function ISCP_GetStatus (callback) {
  top.uexISCP.GetStatus(ISCP_GetParam(1), function (error, state) {
    if (error != 0) {
      console.log("ISCP_GetStatus:0")
      return
    }
    if (typeof callback === "function") callback(state)
  })
}

// 关闭安全链接
function ISCP_Close(callback) {
  try {
    // if(k!=0) console.log('准备重新建立安全连接','ISCP');
    top.uexISCP.CloseISCP(ISCP_GetParam(0))
  } catch (e) {}
}

// 加载ISCP
function ISCP_Load(callback, key, callbackError) {
  if (key == "close") {
    ISCP_Close() // 关闭安全链接
  } else if (key == "init") {
    ISCP_Init(function () {
      ISCP_AnalyseUrl(function () {
        if (typeof callback === "function") callback()
      })
    })
  } else if (key == "server") {
    ISCP_ConnectServer(function () {
      if (typeof callback === "function") callback()
    })
  } else {
    ISCP_Init(function () {
      // 初始化
      ISCP_ConnectServer(function () {
        // 建立安全链接
        ISCP_GetLocalPort(function () {
          // 获取本地监听端口
          ISCP_AnalyseUrl(function () {
            // 地址转换
            if (typeof callback === "function") callback()
          }, callbackError)
        }, callbackError)
      }, callbackError)
    }, callbackError)
  }
}

/// //////////////////////// ISCP[End  ] ///////////////////////////
